// Options: Export entire program; Code Block delimiter instructions;
// Formatted Rung Comments; Element Documentation Database; System Configuration;
// Memory Configuration/Devices with User Add-Ons only; use Element names (no NickNames);
// rung/address annotations; <SPACE> parameter delimiter; 
// Write/overwrite file C:\Repository\CM1T\Do-More CM1-T Modbus TCP\Do-More CM1-T Modbus TCP_EXPORT_DMD.txt

PLC DM-SIM

// Do not modify SYS_CONFIG block!
#BEGIN SYS_CONFIG
a73d2584f4cd3f25f3bf5abca44e8be709865b5285f2645c58ba9ba51e591bb31ea34a404e30d2bb
291bbd33747bdce2469eaa21a00876a74a60821d05bccf85a7557994dd7272d88cdfd2ba21bb9862
4983cc64da0d3bf50022d973a7dbbb03e539c37d291c1d7000649a0fd57489fb9387ce28c1e209bb
3d677aeb0b080e436e57d6cf33583c0e0fa261cd74b6e936ac8318f5a86585bb81a94b513a29c28a
9bab22efde1a74582d9c3dc94cd72a73232a46bc48c0409b2919d0f8164ba49eaa4ea2b1041928a6
96abd7411bb0bfb9ea5588aae5ee91ad82781112b5ccf6c2be97b6f5027a31a99aa9a4c131cf2d9a
aeb9ac84c18e2b6e396c8f937ee6a29c867ed489f7c2682d82d26959202698a51e0caccbe9b72145
842a57db83fe141ea59751e27536aac9ca40b791d0f79401613be59a4bfdcb479c73d2a0a274e9e3
11a63575a1dfb122c348eface066163458d90478bee6ff9db92fd9ab542970d5941b313db5f5678a
05fcb8e134b1fb9c95d81094712d3edf564fb44d19aec2ab9083a838ea0bdc9f3db30871e99d7829
3055651408739c7e999add9f161984075db4c94935bd4955277ccb2608a0f0050968f35dd371265d
a4256b1484524bb979c8b958cbfeda09ebec42d5445846e632496dd779568e35dd08dd654b85322a
d4cef628420cc78529f345ae9460dbd9b86226528467bd09a61c8743a689f7f17753b06a8b29213e
faafcbb8a44ced6f7d131c895ee91f56083e4ece292408d1f8cca522baa1cafe39c129c6213633ea
9c46d6e0b39bae2a1f0db5f516185f4124f60e9f3d346b5e95308239cdb9677d6d17f6102ed10cd0
65fd0781cc93092b22b1c3bca6fb464000fd117da87434ab10850ad14232ea69b5ac4fa64bbc18fd
b57452c777aec39e9cd0e0f7f835864afce463f8420283030d213852372a41fe85a0c3125a58957f
55366b797cc81e266f63fdb62f4ef876079c0194ebdbc384d1cc7467f920f45ebf0313b47797e7c0
e9a30685e5a232d891dd31040c885df273c188644a6a1d8ffa2f58c027ba3f45aa079e444cb12ab0
dbd597ae59fce2b709e8748cc2bf08d2e09abc50ca32e4b2c1233d370ed1fd4bbbf9e1bdcb0b2edb
b2c830eeeb9593cf389ccc978584896cb34095450dd0fc4c2e26903f40df8169c39d16fe09c0549b
91c4068c05ce86ca72d76ad2e44e982dda36c440588a96d80a2f99015725be71a8dfb012a102c55a
77cd6dd5b5979f4ed66605e35c607d3e2a511ecb5c473d13d87aae347846fd2de430e28df9856a75
20f669a972c29e32dfadac315369d6519574a383b1fa196d69b002f7b0ab95d7ccc8cbfe4a82719f
9e34a19a57559916a6bd06fa10d79ec4d419aa003f916fb247b2b1643ed107a04f40686e814dba58
6705fc41345796509c788e7caa09b16b5175614b0be767cfea74c910f3f505fad216dbc7bd72a7bc
439b7d17c9f3b8afb293a989cea426100e8a5f151686225779662921452d16a5bc1d7814f0231670
d6daa6a66e6bc89fda059bbd5695128c2f13ae4c3bdd3100c7b074798a10f82c7e00a64fab46dee7
a0ab329c936986e1b650e616c72f67402de5418134685519ab4ad4b20de34d8196eecd02799acc65
0e3f06e679a2bac414015e1cc833b82741d1fb63f57dd547cca2177fef75cf26756e11a4d4feacce
c40e1251fe57eed082ec5a3a12bcab9c2ce1bb51f3eb848ded3a2f763ac2dba150a3bcc46c6e82ec
54ac27583ec2c7dcc6895074b81ba36d5290c3875f86792119a7b35e627b349b9a5549be63a59a58
0bb169f008ccc819545734662986878861bd1a18d3ad9bd48dbb079cc75de55c7ed79b047a038589
f42ca4e4c77a0972368b32b11d4cb5185f38ba4e0eaf6517d11ae0e927f0e276a37a58c32934ef07
2cbfeb6f775d1d28ec844cb508f9b5f3d2cd53eb65793b00eacf06747ca19c3083db17208978a88d
2ee006d2176b2bd34bfa9fb8c457a9a56e160e8b0238fd806fa8b11afda11fc286bf224d66463c1b
3dc0edd268f3d09037cb6c40f11211d7c2337ad1a9f449c6a2dac21c34950b3c6b359004c4e9785a
19ad6a751ff5ebc8cfaec4b24904f9b9abd8d7acdb3277dd651965f6dd39e6efc8fc3107bb562820
1d1d5f0e446239d9680633c68fe6bb4a7a2fda096dab0e0f4d9c0e6dad38468762fdb02df059d641
92b9e5f10df197ab8fd4bca5121548b1ea37c4d40e0e4a7bbaaf1b32efc38fc04e10261773bb9742
fb7c6c6503c1c7ee36674119f288830d5455bb2b345afb05b7bcb237e4619ed579084363c2343458
c1384375be375d7e70ede895b1911379925a41e970ee0251823aec34fdaa8b44f0f2852bd82e8a62
cfcb5b90a3a1d7e42fdeb267d2012e9467f91bfd4ca441950d1569c74a055c9988e1aa648a08f7e5
65e7d76d34a82832c90dbc474e511d2a117ab0b582c6a6e144ad784237ccf2fb4d8d6f543184ddcc
1b082b4bc2b50db05470b245ceaf99232ebc1b295a21c386ef8e819253c9ea35247be87ae5d512b3
b02a50466d11cd012079c836df062da6ce7f29f0e5196f0eb2c3c438a9d8b66ea33ccf02011f64a4
552fcea179d096333b05dd8cb3eb007adb9c8daf8618e957ae25e79806a1750ebaa68d871bbda4e0
9105620d49c4497d4d05657000a9260439eaf7b5f7f40d9182fa86545fd24344129726b334b01219
3dc4fda6a4d6bc978b1bf9509a2c6a17be0ecbc3d2c6cf0290becfeb0805dbf37b3fcd77a9cf796f
e4a04d546d2c1f156a9885b8c06e5e1ec45f435611fd0fddd4d51b71e40bd08dd059d3c5581a4f1e
476af02719611dfd05fa182b90f3bd8e78d80637da8d93a4859ca4261d897fc0a34653f1a5049bd2
31de6c2c87c4156eb7bdbb6cee87980d08491dd02ef6e073c433cb0ed34cfde526a3d0b330e6ee5b
0054137e04f3a0ad1a541444e415687729ca8ed2ab46e8d3676ad7ee76c257103d8c4050c44db6f6
718500a942aaede67feba8fb525ec9396544d70dd737f952023aeac1f28da687ff0fcfa681c5f132
976bc3a837aaa989b815216b4ae42948fbc937dbae5afc6209e4e40f1ef0807a35ba424a64d17f0b
61509a98b11de9c78a83a68062bd2726d2708269f4fd9845efdc6903f7438cca59e922bde0d9cc3f
169cb8f37d7914ae5ddf08841e4b7df47a6ab88653bb31bfd952b9a6948d965f699df6a80da128e7
7d19d6d0545a2de75d94cda4e19b08fd85da493fc7156a8c8705d254f0f515afed935c5e6cc43b74
4d4a4a8708074fab5e2950fd579d6bdeb621cadaf197aa21611b6c49d627767081c403869351a75c
3eee1a962a858bd23727a632003a2097885540ddfe9e6022efca823b86a5208d0fdfc9501c99857a
c3463f6a8da6356111184b997c1da2f76c177d353670d0b91f3697093e1f31ec7bbb9607123168d5
1fb327801f51e1e299aabe826132a002ee8611e011e11257e67b2857345ed94a9c0ba5e2b2e4498f
274dfd60380e23c4fd7a3b620b98e7113bb1c142b8bdcd3ffe6a6a517ff30c8ecfa3c6c8ae8fa5fa
22630a148d45f0cc12fd802684789f90022f7042ee842d670d120d59a9bd70f3dffc858eff7d0a88
f433d334e716154b743631233b88a1e419934596061e73a2d475bb3c4d73203d8d750886fa6faf73
8ab0a996e6403c3764b055f0ec17a1e83c7838b7fc5514781d335558d475de549dae53f5b2be7271
6890bad1f96a1fd309c06f31a33efb8448cf7f87d18f3978bf4b4f16939b1e27f8732bfd18bda151
a71f317550f3d06524482d1f79c23d65958f272c2ae9a6e793cdbbfa3dc9ab5226b5ca3cf67c74b7
21fe2d4d55b5b311cf6ff1744b3e1926f3d30238e8ec73635d6b0974087095f165459c1f9de7b672
3584693a55ad3d758791e34d0a5a0ca5a3955619581c4238a7d72a0772e0e9fbe350f9bc219bb8f4
8f94d9b1f9188f1b84b1c4e3dc0bab1b725de00010facc820917393879be4ae8118517689e149fd7
56aca9f90864f676110e4dec78f4e52669a8eae8fb4f89374aab28502c4e9a215f44448eaf9df9ae
7a3e7effb41ae3733bb9af0dc46906872badb525956d109eb2bf8596229a550faa7d03f17f5cd716
bfb4a5c31c367f1ca0c95fee994fc60a2931bfb5a3d35923bca6b5dbfdf01a18aacb6277fe966e57
ad3fe01a7b41a7746007541976da72ccfb5dc59ff7e7a27fdd8bb988b1a7214d8fc82b91399200a8
4e3eda7ddad154289e6ddc006a8f4721724d3892e51ec1ed0c0dae365cbf46de4659d7c9d6e3ca03
c1c806116b060eb1be03b3a3d7e4ea61f7990f3b7fc082d8f3f7df038d0ca7285970886e29cbe7ee
e137d0a8591dab811249a477dd444bd3f80be760ed1741887bdda639232bf8429da7bd79a45d656c
53441caf4603cae1b83bed77dccc125c4ef9e0d7ea4b25baf7e26d8891160f562b3b4bef9399ea30
583c5870ea196ce1a3b89cfb4bc04d8d01dd4514dd5fc9583138710a23a16e34889925177991a8ab
082df375e55acf203dbb9fbf79a5c32a4268b6e47787f087a4b37693b72aa6df06267545aad27bba
5bba7caadd74b99ce4d246e067199b4282c698a91499a458de75c860807fa03e848482a16f13e450
a67da10aeba20290a0681d6197b5b68a9cf63552bbe7747b7f865a921a920eb6d24afe2c61c9596d
c76d6a78ec6c01082613dfae95a900f8dbad03f4f5b2e74f3fe664a185dab28eae6907e9093cfeec
6af01e9c6f1387a3b923356cd4b07776043eb87823606cef33e9e9ceeac5df4553d2d7135c6346cc
5910b78a2fecd5c813176f79b4b02242fd7b9cebc97577295b1e361b843ed86fca1459b1f569e0a9
cfbd6ade2e27b6a5da0ef3928479155cc19b0c82363f8e0e28c7be1d6993cac5ad05a27903405fba
0492333a8b0beb13713539c0ca5e2084b6c08517e801bfe9a8948c5827e599671eaa8acb12388d0e
d1901a80c2c20f5918d27ae0738d14d49a4febdfcd38b72db9fcb07c18d386752a2c3f0a0e3b7de8
d8ec30b119effe52a7fff10eb5ed60e28ee7abafeaa3c0d7d5ecc8ea9ae871d4a6b6594ffd9829d1
b640581f209a55787e712cb99b8e4b8caaa321613ca985d39c2cad1e67c7a114ab5492b61c0062e7
0167ca71e2fa21007ccc4908ceddb12d3065ce3cf6fbc70ae9624960ef595c6f492418ca349bff66
ea1632c5c31e9dd4c9b0e4befea5ff0a72296b54c595547bd75b686b810bf994c0d654d5b3f6eee0
65bed1a62862dce977068114e4cb8b5f46878493523476972ccd291f862af0363efae16a256645fc
07c204afb37a8bda3111986c6276e0b9ce8b839f6dd95d4b04e6b550834915730c26090729445e29
9c9735a79e0cad72ce6232e49472746f86262e17fa7330aa6dec88bba18f40742f236d47d624cb12
2a5d62c1b308e77cbf00a7926196bc34191cf96ec157a496080e0ec97bfe8cabdda6c23ab4fef96d
2ab8658a6da145504b2ffedbe8a65b0e84f4aedf90c082a9fd0e5b6c91541944628a6c143855818f
c39b1c13369678f8737e783dd1e0d4e46e31ec990e77fcf75e8252391864de2e8afc7c8c5d4b08dc
b4ac1768575d36352f173764e27478b00a6c60a01bba567bf9eb55e9863fafb10be7a0c9a7afd2bc
d102c1eee12ff895163dd0629afc3e2622c07c781a65b07460af63628791cb5a5f6c7665e49f6ee6
e448aaec6ce4d9f245ef1160ae9d2f4a604375a23101d9873637e8344c98ba89536605b28edc0da4
06c97a488f2c34eafb0467b0c1cb21d12b4aa4731dbd633787011951d2918deffad7d72aa7189ab3
0f51efe03a91d9c7e0a63dc9c472a444023ec3917ee224445c52360a987691bdbfa27407364d0568
ede3aa62dc6be500f95b99288acbecbb6c0f132b956c55c4c320b80ab9e073f8ddcfd47aa7c18ee8
5e043ad8de870ff9e4b9f4adefae680a0010ea7fef9ce27a775cd0ae9fdffb002f902288a96ce938
1cbcb667270da114d9af339e2bc53ee0218b93d309412eade966192fc185d9d15fb25b048397c85d
90904fb82a7d1d7b2aa79051f88bf2aeb14ffa251b8640cd7e1c40c775082c09dab1b6aa8a1dd9b9
12f98f64f2b2f6bd04fb15b8b3c807fa234e596049665809a0b9ef2e25ba83f72a6defab332e23b8
73eab4f3596a67f82810e19c1cbaa7d939979f7a84e62ed209f8ffd172405abed15bd2556ccd5722
ccab21437d189df2693cc5d2b18994862246fe5d0b54816d55ade6e8909453ae2cbbc46ea5a8d0a4
41b9cc8ebaf750997e5a9e9426500e2ea52d10927833df9b147cd3aab9ad31b8175ff77bcbb1ec11
91de87dafa4083f9edc461672d7825ab629ea7708eeac7a62eb0f69b316dd85d1d35f82f6f8b5d72
8d2810627988b1a07a724a7d16a30fc6d959c7f5bbe8b60ad2be9ea6d94f77f73bce2a176d46ba80
2942690249c93edcdbe423428a5df2120213523ef6f7d2efc6c3c44f23becc99057c15b250f10412
53fb00019f0a482a05cbf75a0a3546b38539cddda50137d5d7cdd97119555893f4490b74eb5239cc
613db752fb320ba55a4643aafd6790da23634705abbe88db460ed8d927880bc21144863908ad8306
38534fb51206226f8841dc4b46f8d24412afe086b0547230242516aadf9a5f4dc3696970109a8115
04c8f7ecbe11f46bde316103690ffa57ba10880b9a90b32361e326c3b95fead263dbb71b738650fe
dd0f1e97eb790b9b5b8604cd315218627c80e675a5008353df55adc01a73064a79b92d241002f891
9b202c450a48ca8adf33c4caee80f8af9e8e7601918ed302cffa133fe6e991e5a9de0b3f85ac5c4e
13e5fc50d6162bfa23b7940d77f40f01f8bcedc5fa8c89e065050a3d4c1fd75eb2423a4ed7a9fc89
779ee5345f6db7e0e329d84475c3194def7f8abfb2abd3eb630065f81e0c857dcd18b02659c764ea
d8c0e5286aac3027184eef282dd251fa2254ea52c936c520a021fa517ef28f4e4bd1bf85d47744d1
399efdf85f3b990e6378b2a386d31cebfe3f815ac9fe1dc2eb37ca910db91616bdbe704bf0eae4ba
67ebecde1b5569198364ab973739fe754a20c5b5ab1d2e70619599f50be4a454d0c6bb162720cb91
c91e082e1953bf93d2dd000c326c974d69705f4c19a655abd88dbfee5f212c92179fc26058111dab
a41425f8da202c8bccee7403154e8a8fbbbfd7e8e2c5f0954df8ae72f502343688030a60b9f58eac
443f69cb41eff8ba8e2cdf9de9f9e43ee5c18a033677bea1506a45cf273e5ba970c733140d20c2dd
97f0e166bf86b344ce51cdbdd580604d5cfee3a93bd9ce3f8a8d6d3f0a8187e50da62e75a0d2a9c2
c823149c775e437da76dc7b24bf73fc81fa5b62fb305546e36a37502c914944a7f2424fb47b58eda
83166f03ed4c4e15219c1ac1d101e253a5517d76c9665b84ca7e6e7da9c9ea726fe9bb19983bc9bb
85ca1cdf30df7178537bbac100a84a2103d11cc7f7df0afffd83dbfbb3a6f7013886605b4fcaa725
90c05550720569787d82825a23ce4985c52ba2090f42b01971bcb1183b35a3e16d4cf17a678ed581
c95fb40ff2da7fe8801353a501d5949533aba168ef11de96c4ee1f0cd0dde50b2c7a734c44eddbfe
310731d4b8a951702884aead838117f18a5a319edf8e7641e9de10b6d1521036ceb025f9116d7c84
a5fd517bf8d0fdd4ec7e926f34f92098238ac78f3ba9a0133407192e5b8d8ecd076677f9ed5ced26
2338ab3c05493e86798d7bef174fda5192223d065fea57a7b06fbb71c19eefde61e318eb0fc0dbaf
3d74857f5ef9c6a6e1a90af8267a0bd230b57836e78daabe6e89a4d49c921a6e7677bc4134740cb1
f8ef389226a4e61e65cc0281db6df342335ea6503c54943cf34e527efa12071df213b559f8860afe
f9f48a6aa52f942fb3e3b08693f599ed31a7ef89319a5af3eb654b640a2edc43c2bb402652b7ce5e
f55aa01eaca4b4cdb1dfbd2195ca9b30f44220b6c71dc1c9ebf4be30d571298de454ac18bef676ca
0bd211f80b7a685ac728fa8216574ef9402ce6776714ff1e5e4c76c6c872ffd9c707c345af6cbdd4
590991d0f020eee0ca3688d9a835345c764b961e81ba56b9b3c7608948e512253fecbe91996eb8b1
c8414e4bac905999505878cee37df2a6a0d0cac59e89a399be2057dc745eae185f32381f8b3b7710
877f5e7f3208b9790d53e670c48c780049caddfeca5dc304bd78d4f24268d2f6db8c179b2a71da73
e47847f9a6e3af874aa0bc7990131c2eef0e2b7d7a88407aa094dcc37d4dd08716d4b5eb236bfc93
2feef09d7e241d41cf073dd2d4f5170eb9baf11f33044ad3c7b41520a121b8eee668e8b70d830323
0267e707b8b8d10a72622602fc044a8f45e080a31a6308b22fb926bf1282aa00838c49ef939e6b02
1b04839599d205561b890c061f5a02ef1757f41cd3b8c8f5085598add2f5ea901f964b0e1fce5dda
322d501a948d287e5957a04e486d50fedcba11bbc54139acd88dbc9f25a59d72d72875d8987229a2
3af2b98b037725e8c3c274cb9a69ba901f36c779546c2a9ef1835523f353c3d8e8b21a993a7b4280
df2cbd5967bbcf6ffa07e874f7d61d575808a4565b1b49bbf4a60f9bc8eb6a49cf20171a26bdb2b3
112c137410d2a4398fe36087e202f125944dbaf7fd93dd9f87bafc1eaa52a2cf7eb8413fb95eeecd
e11b844eeacfc91056663cb1c3f981ac73a31cadcf8c5fb6d7322f6ae65a7a16c9d4984e59da6c11
e72dcf35f5a57335259fbfa449b8e916264908e9ba51544ab768c67090a8291be631020560ce0d2f
6a3cc1f08398181fcb609fce6edb9c3288117590bc019af716197c5eb98821d3b6330f180dfce183
0ed4cd603fc6404cda105ff5f9a2f15e31beda70f854c98e3befafac5eb562f10335c9965e190bf5
99581f356afd81e9ab6de9be5d7700d737cd2fd11b01c6072f8c50d689e490d912337d63b711e4fc
d4d45e84e68dcd7d087e135642b044e2934a3c391d6a96dbd31e07e634bb30732f6fdd7547ea4974
dbb759f15df758266a867bb08462d9994dbc999115285d50eddea2f61d89d2b30212282800685886
bcf87d776029e7587bdd3a6d76c8e840bd634feff9f01a1277510ba6d0cbfec62a2a2df2e370976f
efaa8816c8a0c94cc3ec3790b936f641d92041000f8feb1bd15353faa78351487e0ae0d0d635799b
c06fbe39f1378163d91da7f85244bed4d96bef13f7955915e0f1a9c6d6e47e3600f1deddef147953
d47395e4a10d073abdc770ff517ae73a9e30d2f20dbe7ec9186d665d1baa0b37af477fe190b85a29
4c5476e0b7539bf3c3a8798dccb8cd875dc879dd77a2663d591b0581837272a0c5e29aface612b32
ade4cd50ca32fa39d49b34856eca4323d5d7f11cdc5887bc736193bbe6d6ad7fe3c0fe4499ecdf62
aca2e8e8ddb5d3659e811e1990417c5877b784f8c446a2862060437893a61a316a3012f565d3b01a
fd083411078ac08b124926abefda2e79f7fd8877673299847eafbdb07c29cc965185ddc04a7d94a0
84048a012e4a402e0e32b21d60083887373df2f0d46d83567ec3c33f5f87db3b4bdf4bf252c5200e
ed5bbe7ef64f7d2ead93767a2dac58a53c05ac352621c454da465b3e176a4829f5c46baba548ab8f
f63f4087fc725a674db626d6d2e46e16ee8d6c2f3d252bf24ae39bb77539797d1de30f6efc8b751b
9406f2d09c3e7f294a3cf164c13087e6e0d103c623f529bec7d6acc17ca31f0862530f9f9e071e26
5a7383eeeca2c57e5adf3a8ce8985e61a4b41ba2f6e1cbc3afdb847dc9a45a9633ad0788a7698ab8
ad920ce211ce004e9adbf4ad665164e111803c98b37a4ab83ee3d0ced74f272cf4ecd500bb32707e
73fcbf0622eb98781f8701ee11e4800b5a56fe098314ef60e2a5098c01866646611f0a8977db213b
82c37c3e3a6fbe88f707984175437d115e1ee902f8bb79ae4f9a4c1ea7920a9dbd40fdd820c6612d
a9522341f7f5bbab149b0c2a5faf6c945673f73aeff4a000fb76b64a4217fd8faa26aece502c82ce
c4bddfa0dd003e5f1afae99ff7eecf1ff687baa254abd9a2785df6e5e4862ac88386a59aeb5e12cb
ce5cba62c45caaee92c133ec8f6de3b8e3765c2585b06fac913765cd58fd28a8032a84cbab0aa958
1c01048555b08648721d1bf783de533cb8f25fc358b4db745b6621dc25607fca93d865d506d23767
69b53cf425debe2917ea970b2c27c9d6509ed9e4e30aa89107390c391434614c2db4f15902904370
dfa64230498403fed4bad4b55d20f9d4828068296e87babc8dbe35e8e969e314e634d7d54fb3da83
44f2097f5461d8a0b55d22cc70d877f46c44ec7877a0cc6575994dc49993edcf9775b3d4bfc56468
f67381015491c44dae8d6506398178032eeefb6f435e5d21cb5ee6c6ee82250ca7f5792c84337e5f
80b3301aa4df0b7864639513207a6ab6ad676f54529aab0d64e49f75de749c028fb517d8e8f08fd4
f2b60aa6a382d745c56a9d6f2795a395bf17bba2b931d046d514dfb2e7e4a29c5f9f8e69b82fd8be
d82a35704cc7ae99c3775bdfded010bb5f1a8091b50adeaebfe18a06193d537f21649d37767e32ce
4297653b21d559c16abd4eeee78f826b8c988cb4b724a9cf6ecaa5b74693e936b02d06bb23ea41bb
c96c4313c5d746da7424c05905634de10cf7b901f1824c427856c40f0d0750fa02c15d37d276155a
596c5340aec3a193e78b7fe52e747cdc1731ff5eeda0a3f213378b17242fe450714179e90c4a26f1
9dc2afa403ef07b6c04d17b63234baba9ea4461328797ccf9ca6de358794e014d98dcdf310cb4ded
2944490c9fa4b4dac885b048a976fc1e721e3f2696779329834fb87d96f3f1a89bd5ab12c551f9c4
657ec89cdbc4ff1d99cc8819813ea03908a1ee05c4fc8b017df3badefa54818cbe00abcdf38fb419
8d173abe9f45e42a1717d7654c200e575abe978430b680cc8127633675304d8949eb038668c5bcb1
d81df57e4f65c271e6f1d579066393771eb2f94af27da51ad354eb74595d4935d245d7c56e4e1b88
f480f34920488976243a6f8e3d3737dabe205bffc1b3b832c41541cc2297c04098a007054729bbea
711151906fcf515905abcdade2a528a03758250fddc966991c869e7c73fc01677ea6e0ad427e3dd4
efb59508c32d06e3c94edb5b620626a1e3d4397afbd368b64595b82d77b29fa9a848704c1a947a6b
415d631b72a8bfe97f9b20a0b50b1032ad6df585df26c1f917c0e329fce413887df056c416d2c9fd
117f09bf61508553252ec6a9c3040933d330d3267e5e79f720b5c046d1dabc303bc9d993af674e71
1fcb824ad8c810510438024c90620a2062cfb1b0cd1f4ddd3e1712593f7017687e2352ff461ada36
7c05bf597064f6f8e0e00d20f4f4965c360e2b1f0a2544ae6bd9099796177fd04c9a1b0ffc2dbabb
d3fb3442972ca56a3bfb37529010f200779132f5a60272184fb0483d2ebb00d5fd91d97ab0d2ca96
a0b572390f00cca412077bdfd2dff45a82f3302ef635bfe2a63ab033570d30e9e053bcdad6c3a484
de2c363410
#END

#BEGIN UDT_CONFIG
CM1T_STATUS
// Field Name, Data Type, Memory Layout, Read/Write, Display Format, Data View Detail
ErrorStop, BIT, 0:0, Read-Write, Native, Short
Disabled, BIT, 0:1, Read-Write, Native, Short
Standstill, BIT, 0:2, Read-Write, Native, Short
Homing, BIT, 0:3, Read-Write, Native, Short
Stopping, BIT, 0:4, Read-Write, Native, Short
DiscreteMotion, BIT, 0:5, Read-Write, Native, Short
ContinuousMotion, BIT, 0:6, Read-Write, Native, Short

CM1T_DATA_IN
// Field Name, Data Type, Memory Layout, Read/Write, Display Format, Data View Detail
us50Counter, SDWORD, 0:0, Read-Write, Native, Short
ActualPosition, SDWORD, 1:0, Read-Write, Native, Short
MotionTarget, SDWORD, 2:0, Read-Write, Native, Short
ActualVelocity, SDWORD, 3:0, Read-Write, Native, Short
MotorStatus, UWORD, 4:0, Read-Write, Native, Short
PercentActCrnt, SWORD, 4:1, Read-Write, Native, Short
PercentOvrLdTrq, SWORD, 5:0, Read-Write, Native, Short
AnalogIn, SWORD, 5:1, Read-Write, Native, Short
DCVoltageIn, SWORD, 6:0, Read-Write, Native, Short
DigitalIn, SBYTE, 6:2, Read-Write, Native, Short
Temperature, SBYTE, 6:3, Read-Write, Native, Short
ModeOfOpDsp, SBYTE, 7:0, Read-Write, Native, Short
ErrorCode, SBYTE, 7:1, Read-Write, Native, Short
ReadAddress1, SWORD, 7:1, Read-Write, Native, Short
ReadValue1, SDWORD, 8:0, Read-Write, Native, Short

CM1T_DATA_OUT
// Field Name, Data Type, Memory Layout, Read/Write, Display Format, Data View Detail
TargetPosition, SDWORD, 0:0, Read-Write, Native, Short
TargetVelocity, SDWORD, 1:0, Read-Write, Native, Short
TargetTorque, SWORD, 2:0, Read-Write, Native, Short
TargetAccel, SWORD, 2:1, Read-Write, Native, Short
TargetDecel, SWORD, 3:0, Read-Write, Native, Short
ControlWord, UWORD, 3:1, Read-Write, Native, Short
ModeOfO, UBYTE, 4:0, Read-Write, Native, Short
DigitalOUT, UBYTE, 4:1, Read-Write, Native, Short
WriteAddress1, SWORD, 4:1, Read-Write, Native, Short
WriteValue1, SDWORD, 5:0, Read-Write, Native, Short
ReadAddress1, SWORD, 6:0, Read-Write, Native, Short
PAD, SWORD, 6:1, Read-Write, Native, Short

CM1T_AXIS
// Field Name, Data Type, Memory Layout, Read/Write, Display Format, Data View Detail
Power, BIT, 16:0, Read-Write, Native, Short
Start, BIT, 16:1, Read-Write, Native, Short
Stop, BIT, 17:0, Read-Write, Native, Short
ResetError, BIT, 16:5, Read-Write, Native, Short
SetToZero, BIT, 16:2, Read-Write, Native, Short
Home, BIT, 16:4, Read-Write, Native, Short
TargetPos, SDWORD, 19:0, Read-Write, Native, Short
TargetVel, SDWORD, 18:0, Read-Write, Native, Short
TargetAcc, SWORD, 17:1, Read-Write, Native, Short
TargetDec, SWORD, 16:1, Read-Write, Native, Short
TargetTrq, SWORD, 22:1, Read-Write, Native, Short
ActualPos, SDWORD, 20:0, Read-Write, Native, Short
ActualVel, SDWORD, 23:0, Read-Write, Native, Short
ActualTrq, SWORD, 22:0, Read-Write, Native, Short
MotionType, UBYTE, 16:1, Read-Write, Native, Short
Status, CM1T_STATUS, 21:0, Read-Write, Native, Short
DATA_IN, CM1T_DATA_IN, 0:0, Read-Write, Native, Short
DATA_OUT, CM1T_DATA_OUT, 9:0, Read-Write, Native, Short
#END

#BEGIN MEM_CONFIG
 CM1T_Execute <Virtual>  0
 CM1TInternal CM1T_AXIS  0 -1
 CM1TAxis1 CM1T_AXIS  0 -1
#END

// Beginning of Code Block CM1T_Execute
$LGCMOD CM1T_Execute

// Rung CM1T_Execute#1
// Offset 0
#BEGIN FMT_COMMENT 
"<b><U><FONT tsize=4>Mode Of Operation</FONT></U></b>"
#END

STRLE CM1TInternal.MotionType 2
MOVE 3 CM1TInternal.DATA_OUT.ModeOfO

// Rung CM1T_Execute#2
// Offset 6
STRE CM1TInternal.MotionType 3
MOVE 11 CM1TInternal.DATA_OUT.ModeOfO

// Rung CM1T_Execute#3
// Offset 12
#BEGIN FMT_COMMENT 
"<b><FONT tsize=4><U>Statusword</U></FONT></b><br> <br>"
"V1000 used for bit minipulation with motor status "
#END

STR ST1
MOVE CM1TInternal.DATA_IN.MotorStatus V1000

// Rung CM1T_Execute#4
// Offset 15
STR V1000:3
OUT CM1TInternal.Status.Standstill

// Rung CM1T_Execute#5
// Offset 17
STR V1000:4
OUT CM1TInternal.Status.Disabled

// Rung CM1T_Execute#6
// Offset 19
STR V1000:0
OR V1000:1
OR V1000:2
OR V1000:6
OR V1000:7
OUT CM1TInternal.Status.ErrorStop

// Rung CM1T_Execute#7
// Offset 25
#BEGIN FMT_COMMENT 
"<FONT tsize=4><B><U>Copy Position, Velocity and Torque</U></B></FONT>"
#END

STR ST1
MOVE CM1TInternal.DATA_IN.ActualPosition CM1TInternal.ActualPos

// Rung CM1T_Execute#8
// Offset 28
STR ST1
MOVE CM1TInternal.DATA_IN.ActualVelocity CM1TInternal.ActualVel

// Rung CM1T_Execute#9
// Offset 31
STR ST1
MOVE CM1TInternal.DATA_IN.PercentActCrnt CM1TInternal.ActualTrq

// Rung CM1T_Execute#10
// Offset 34
#BEGIN FMT_COMMENT 
"<b><U><FONT tsize=4>Copy Targets to relevant OUT data</FONT></U></b>"
#END

STR ST1
MOVE CM1TInternal.TargetPos CM1TInternal.DATA_OUT.TargetPosition

// Rung CM1T_Execute#11
// Offset 37
STR ST1
MOVE CM1TInternal.TargetVel CM1TInternal.DATA_OUT.TargetVelocity

// Rung CM1T_Execute#12
// Offset 40
STR ST1
MOVE CM1TInternal.TargetAcc CM1TInternal.DATA_OUT.TargetAccel

// Rung CM1T_Execute#13
// Offset 43
STR ST1
MOVE CM1TInternal.TargetDec CM1TInternal.DATA_OUT.TargetDecel

// Rung CM1T_Execute#14
// Offset 46
STR ST1
MOVE CM1TInternal.TargetTrq CM1TInternal.DATA_OUT.TargetTorque

// Rung CM1T_Execute#15
// Offset 49
#BEGIN FMT_COMMENT 
"<U><b><FONT tsize=4>Build Controlword</FONT></b></U><br>"
" <br>V1000 is cleared to 0 for use with controlword"
#END

STR ST1
MOVE 0 V1000

// Rung CM1T_Execute#16
// Offset 52
STR CM1TInternal.Start
OUT V1000:0

// Rung CM1T_Execute#17
// Offset 54
STR CM1TInternal.Stop
OUT V1000:1

// Rung CM1T_Execute#18
// Offset 56
#BEGIN FMT_COMMENT 
"Set Absolute/Relative Bit"
#END

STRE CM1TInternal.MotionType 1
OUT V1000:2

// Rung CM1T_Execute#19
// Offset 61
#BEGIN FMT_COMMENT 
"Set Position/Speed control bit"
#END

STRE CM1TInternal.MotionType 2
OUT V1000:3

// Rung CM1T_Execute#20
// Offset 66
#BEGIN FMT_COMMENT 
"Set disable bit"
#END

STRN CM1TInternal.Power
OUT V1000:4

// Rung CM1T_Execute#21
// Offset 68
STR CM1TInternal.ResetError
OUT V1000:5

// Rung CM1T_Execute#22
// Offset 70
STR CM1TInternal.SetToZero
OUT V1000:6

// Rung CM1T_Execute#23
// Offset 72
STR CM1TInternal.Home
OUT V1000:7

// Rung CM1T_Execute#24
// Offset 74
STR ST1
MOVE V1000 CM1TInternal.DATA_OUT.ControlWord

// Rung CM1T_Execute#25
// Offset 77
RET

// Rung CM1T_Execute#26
// Offset 78
NOP

// End of Code Block CM1T_Execute
$LGCEND CM1T_Execute

// Beginning of Code Block $Main
$PRGRM $Main

// Rung $Main#1
// Offset 0
STR ST1
CALL CM1T_Execute 0x1 DST511 "3 CM1TAxis1 CM1TInternal 1" "3 CM1TInternal CM1TAxis1 1"

// Rung $Main#2
// Offset 16
#BEGIN FMT_COMMENT 
"<FONT tsize=4><b><U>Copy Motor Feedback</U></b></FONT>"
#END

STR ST1
COPY 0x1 "4 0x0 CM1TAxis1.ActualPos D0 1 0x0 CM1TAxis1.ActualVel D1 1 0x0 CM1TAxis1.ActualTrq D2 1"

// Rung $Main#3
// Offset 27
STRN CM1TInternal.Status.Disabled
OUT Y0

// Rung $Main#4
// Offset 29
STR CM1TAxis1.Status.Standstill
OUT Y1

// Rung $Main#5
// Offset 31
STR CM1TAxis1.Status.ErrorStop
OUT Y2

// Rung $Main#6
// Offset 33
#BEGIN FMT_COMMENT 
"<B><U><FONT tsize=4>Motion Type</FONT></U></B><br> <br>"
"0: Absolute Position<br>1: Relative Position<br>2: Speed<br>"
"3: Torque<br> <br>Set on analog input WX0"
#END

STR ST1
MOVE WX0 CM1TAxis1.MotionType

// Rung $Main#7
// Offset 36
#BEGIN FMT_COMMENT 
"<FONT tsize=4><B><U>Control</U></B></FONT><br>"
"<b><U><FONT tsize=4></FONT></U></b> <br>Power on"
#END

STR X0
OUT CM1TAxis1.Power

// Rung $Main#8
// Offset 38
#BEGIN FMT_COMMENT 
"Start"
#END

STR X1
OUT CM1TAxis1.Start

// Rung $Main#9
// Offset 40
#BEGIN FMT_COMMENT 
"Stop"
#END

STR X2
OUT CM1TAxis1.Stop

// Rung $Main#10
// Offset 42
#BEGIN FMT_COMMENT 
"Reset Error"
#END

STR X3
OUT CM1TAxis1.ResetError

// Rung $Main#11
// Offset 44
#BEGIN FMT_COMMENT 
"Set current position to 0"
#END

STR X4
OUT CM1TAxis1.SetToZero

// Rung $Main#12
// Offset 46
#BEGIN FMT_COMMENT 
"Start home routine"
#END

STR X5
OUT CM1TAxis1.Home

// Rung $Main#13
// Offset 48
#BEGIN FMT_COMMENT 
"<b><U><FONT tsize=4>Motor Torque</FONT></U></b><br> <br>"
"1) Position/speed mode set torque=1100 (maximum - 110%25 "
"rated)<br>2) Torque mode then follow analog input WX1"
#END

STR ST1
DUPBOOL
ANDLE CM1TInternal.MotionType 2
MOVE 1100 CM1TAxis1.TargetTrq
POPBOOL
ANDE CM1TInternal.MotionType 3
CLAMP WX1 1100 0 CM1TAxis1.TargetTrq

// Rung $Main#14
// Offset 65
#BEGIN FMT_COMMENT 
"<FONT tsize=4><b><U>Move 1 Parameters</U></b></FONT>"
#END

STR X8
COPY 0x1 "4 0x0 1000 CM1TAxis1.TargetPos 1 0x0 20 CM1TAxis1.TargetVel 1 0x0 20 CM1TAxis1.TargetAcc 1 0x0 20 CM1TAxis1.TargetDec 1"

// Rung $Main#15
// Offset 78
#BEGIN FMT_COMMENT 
"<b><U><FONT tsize=4>Move 2 Parameters</FONT></U></b>"
#END

STRN X8
COPY 0x1 "4 0x0 -1000 CM1TAxis1.TargetPos 1 0x0 100 CM1TAxis1.TargetVel 1 0x0 100 CM1TAxis1.TargetAcc 1 0x0 100 CM1TAxis1.TargetDec 1"

// End of Code Block $Main
$PGMEND $Main

#BEGIN ELEMENT_DOC
"SS0","jiop","",""
"UB0","_CMTAxsolute_A","","CMTAxis1.Motion_Type.MoveAbsolute"
#END

